const fs = require('fs')

const fileService = require('../service/file.service')
const userService = require('../service/user.service')
const { UPLOAD_PATH } = require('../config/path')

class UserController {
	async create(ctx, next) {
		try {
			// 1.获取用户传递过来的信息
			const user = ctx.request.body

			// 2.将user信息存储到数据库中
			const result = await userService.create(user)
			// 3.查看存储的结构，告知前端创建成功
			ctx.body = {
				code: 0,
				message: '创建用户成功'
			}
		} catch (error) {

		}

	}
	async showAvatarImage(ctx, next) {
		// 1.获取用户的id
		const { userId } = ctx.params

		// 2.获取userId对应的头像信息
		const avatarInfo = await fileService.queryAvatarWithUserId(userId)
		// 3.获取头像所在的文件
		const { filename, mimetype } = avatarInfo
		ctx.type = mimetype
		ctx.body = fs.createReadStream(`${UPLOAD_PATH}/${filename}`)
	}
	// 查询用户角色信息
	async getUserInfo(ctx, next) {
		// 1.获取用户id
		const { id } = ctx.params
		// 2. 获取用户信息
		const userInfo = await userService.queryUserInfo(id)

		// 3.返回给前端
		ctx.body = {
			code: 0,
			message: '获取用户信息成功',
			data: userInfo
		}
	}
	// 获取首页的菜单数据
	async getMenusList(ctx, next) {
		// 1.获取用户角色id
		const { roleId } = ctx.params
		// 2.获取菜餐信息
		const meneusInfo = await userService.queryMenusList(roleId)
		// 3.返回给前端
		ctx.body = {
			code: 0,
			message: '获取用户信息成功',
			data: meneusInfo
		}
	}
	// 查询全部用户信息
	async getAllUserInfo(ctx, next) {
		const {
			name,
			age,
			nickname,
			phone,
			startDate,
			endDate,
			email,
			status,
			offset,
			limit
		} = ctx.query
		// 1.获取信息
		const usersInfo = await userService.queryUsersInfo({
			name,
			age,
			startDate,
			endDate,
			nickname,
			phone,
			email,
			status,
			offset,
			limit
		})
		// 3.返回给前端
		ctx.body = {
			code: 0,
			message: '获取全部用户信息成功',
			data: usersInfo
		}
	}
	// 更新用户信息
	async updateUserInfo(ctx, next) {
		const { id } = ctx.params
		// 1.获取更新的属性
		const info = ctx.request.body
		console.log(info)
		// 2.对数据库进行操作
		const result = await userService.updateUsersInfo(info, id)
		ctx.body = {
			code: 0,
			message: '修改用户信息成功'
		}
	}
	// 删除用户
	async deleteUser(ctx, next) {
		const { id } = ctx.params
		console.log(id)
		// 删除用户 软删除
		const result = await userService.deleteUser(id)
		ctx.body = {
			code: 0,
			message: '删除用户成功'
		}
	}
	// 修改密码
	async updatePassword(ctx, next) {
		const { name, password } = ctx.request.body
		const result = await userService.updatePassword(name, password)
		ctx.body = {
			code: 0,
			message: '修改密码成功'
		}
	}
	// 判断是否存在
	async isExist(ctx, next) {
		ctx.body = {
			code: 0,
			message: '用户存在'
		}
	}
}

module.exports = new UserController()
